<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/time.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/time.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="Maybe">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RJTUVfSF8w"><span class="b">_LINUX_TIME_H</span></a>
<a name="2" /><span class="Maybe">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_X0xJTlVYX1RJTUVfSF8w"><span class="b">_LINUX_TIME_H</span></a>
<a name="3" /><span class="Maybe">       3:</span> 
<a name="4" /><span class="Maybe">       4:</span> <span class="f">#</span> <span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">cache</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="5" /><span class="Maybe">       5:</span> <span class="f">#</span> <span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">seqlock</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="6" /><span class="Maybe">       6:</span> <span class="f">#</span> <span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">math64</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="7" /><span class="Maybe">       7:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">uapi</span><span class="f">/</span><span class="b">linux</span><span class="f">/</span><span class="b">time</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="8" /><span class="Maybe">       8:</span> 
<a name="9" /><span class="Maybe">       9:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">timezone</span> <span class="b">sys_tz</span><span class="f">;</span>
<a name="10" /><span class="Maybe">      10:</span> 
<a name="11" /><span class="Maybe">      11:</span> <span class="k">/* Parameters used to convert the timespec values: */</span>
<a name="12" /><span class="Maybe">      12:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TVNFQ19QRVJfU0VDXzA_"><span class="b">MSEC_PER_SEC</span></a>    <span class="c">1000L</span>
<a name="13" /><span class="Maybe">      13:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VVNFQ19QRVJfTVNFQ18w"><span class="b">USEC_PER_MSEC</span></a>    <span class="c">1000L</span>
<a name="14" /><span class="Maybe">      14:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfVVNFQ18w"><span class="b">NSEC_PER_USEC</span></a>    <span class="c">1000L</span>
<a name="15" /><span class="Maybe">      15:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfTVNFQ18w"><span class="b">NSEC_PER_MSEC</span></a>    <span class="c">1000000L</span>
<a name="16" /><span class="Maybe">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_VVNFQ19QRVJfU0VDXzA_"><span class="b">USEC_PER_SEC</span></a>    <span class="c">1000000L</span>
<a name="17" /><span class="Maybe">      17:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a>    <span class="c">1000000000L</span>
<a name="18" /><span class="Maybe">      18:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_RlNFQ19QRVJfU0VDXzA_"><span class="b">FSEC_PER_SEC</span></a>    <span class="c">1000000000000000LL</span>
<a name="19" /><span class="Maybe">      19:</span> 
<a name="20" /><span class="Maybe">      20:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_VElNRV9UX01BWF8w"><span class="b">TIME_T_MAX</span></a>    <span class="f">(</span><span class="b">time_t</span><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="c">1UL</span> <span class="f">&lt;&lt;</span> <span class="f">(</span><span class="f">(</span><span class="m">sizeof</span><span class="f">(</span><span class="b">time_t</span><span class="f">)</span> <span class="f">&lt;&lt;</span> <span class="c">3</span><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span> <span class="f">-</span> <span class="c">1</span><span class="f">)</span>
<a name="21" /><span class="Maybe">      21:</span> 
<a name="22" /><span class="Maybe">      22:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">timespec_equal</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">a</span><span class="f">,</span>
<a name="23" /><span class="Maybe">      23:</span>                                  <span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">b</span><span class="f">)</span>
<a name="24" /><span class="Maybe">      24:</span> <span class="f">{</span>
<a name="25" /><span class="Maybe">      25:</span>     <span class="m">return</span> <span class="f">(</span><span class="b">a</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">==</span> <span class="b">b</span><span class="f">-&gt;</span><span class="b">tv_sec</span><span class="f">)</span> <span class="f">&amp;&amp;</span> <span class="f">(</span><span class="b">a</span><span class="f">-&gt;</span><span class="b">tv_nsec</span> <span class="f">==</span> <span class="b">b</span><span class="f">-&gt;</span><span class="b">tv_nsec</span><span class="f">)</span><span class="f">;</span>
<a name="26" /><span class="Maybe">      26:</span> <span class="f">}</span>
<a name="27" /><span class="Maybe">      27:</span> 
<a name="28" /><span class="Maybe">      28:</span> <span class="k">/*</span>
<a name="29" /><span class="Maybe">      29:</span> <span class="k"> * lhs &lt; rhs:  return &lt;0</span>
<a name="30" /><span class="Maybe">      30:</span> <span class="k"> * lhs == rhs: return 0</span>
<a name="31" /><span class="Maybe">      31:</span> <span class="k"> * lhs &gt; rhs:  return &gt;0</span>
<a name="32" /><span class="Maybe">      32:</span> <span class="k"> */</span>
<a name="33" /><span class="Maybe">      33:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">timespec_compare</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">lhs</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">rhs</span><span class="f">)</span>
<a name="34" /><span class="Maybe">      34:</span> <span class="f">{</span>
<a name="35" /><span class="Maybe">      35:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&lt;</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span><span class="f">)</span>
<a name="36" /><span class="Maybe">      36:</span>         <span class="m">return</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>
<a name="37" /><span class="Maybe">      37:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&gt;</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span><span class="f">)</span>
<a name="38" /><span class="Maybe">      38:</span>         <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="39" /><span class="Maybe">      39:</span>     <span class="m">return</span> <span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_nsec</span> <span class="f">-</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_nsec</span><span class="f">;</span>
<a name="40" /><span class="Maybe">      40:</span> <span class="f">}</span>
<a name="41" /><span class="Maybe">      41:</span> 
<a name="42" /><span class="Maybe">      42:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">timeval_compare</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timeval</span> <span class="f">*</span><span class="b">lhs</span><span class="f">,</span> <span class="m">const</span> <span class="m">struct</span> <span class="b">timeval</span> <span class="f">*</span><span class="b">rhs</span><span class="f">)</span>
<a name="43" /><span class="Maybe">      43:</span> <span class="f">{</span>
<a name="44" /><span class="Maybe">      44:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&lt;</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span><span class="f">)</span>
<a name="45" /><span class="Maybe">      45:</span>         <span class="m">return</span> <span class="f">-</span><span class="c">1</span><span class="f">;</span>
<a name="46" /><span class="Maybe">      46:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&gt;</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_sec</span><span class="f">)</span>
<a name="47" /><span class="Maybe">      47:</span>         <span class="m">return</span> <span class="c">1</span><span class="f">;</span>
<a name="48" /><span class="Maybe">      48:</span>     <span class="m">return</span> <span class="b">lhs</span><span class="f">-&gt;</span><span class="b">tv_usec</span> <span class="f">-</span> <span class="b">rhs</span><span class="f">-&gt;</span><span class="b">tv_usec</span><span class="f">;</span>
<a name="49" /><span class="Maybe">      49:</span> <span class="f">}</span>
<a name="50" /><span class="Maybe">      50:</span> 
<a name="51" /><span class="Maybe">      51:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">mktime</span><span class="f">(</span><span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">year</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">mon</span><span class="f">,</span>
<a name="52" /><span class="Maybe">      52:</span>                 <span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">day</span><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">hour</span><span class="f">,</span>
<a name="53" /><span class="Maybe">      53:</span>                 <span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <a href="cpu.c_macros_noref.html#_bWluXzA_"><span class="b">min</span></a><span class="f">,</span> <span class="m">const</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">sec</span><span class="f">)</span><span class="f">;</span>
<a name="54" /><span class="Maybe">      54:</span> 
<a name="55" /><span class="Maybe">      55:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">set_normalized_timespec</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">,</span> <span class="b">time_t</span> <span class="b">sec</span><span class="f">,</span> <span class="b">s64</span> <span class="b">nsec</span><span class="f">)</span><span class="f">;</span>
<a name="56" /><span class="Maybe">      56:</span> 
<a name="57" /><span class="Maybe">      57:</span> <span class="k">/*</span>
<a name="58" /><span class="Maybe">      58:</span> <span class="k"> * timespec_add_safe assumes both values are positive and checks</span>
<a name="59" /><span class="Maybe">      59:</span> <span class="k"> * for overflow. It will return TIME_T_MAX if the reutrn would be</span>
<a name="60" /><span class="Maybe">      60:</span> <span class="k"> * smaller then either of the arguments.</span>
<a name="61" /><span class="Maybe">      61:</span> <span class="k"> */</span>
<a name="62" /><span class="Maybe">      62:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">timespec_add_safe</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">lhs</span><span class="f">,</span>
<a name="63" /><span class="Maybe">      63:</span>                      <span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">rhs</span><span class="f">)</span><span class="f">;</span>
<a name="64" /><span class="Maybe">      64:</span> 
<a name="65" /><span class="Maybe">      65:</span> 
<a name="66" /><span class="Maybe">      66:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">timespec_add</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="b">lhs</span><span class="f">,</span>
<a name="67" /><span class="Maybe">      67:</span>                         <span class="m">struct</span> <span class="b">timespec</span> <span class="b">rhs</span><span class="f">)</span>
<a name="68" /><span class="Maybe">      68:</span> <span class="f">{</span>
<a name="69" /><span class="Maybe">      69:</span>     <span class="m">struct</span> <span class="b">timespec</span> <span class="b">ts_delta</span><span class="f">;</span>
<a name="70" /><span class="Maybe">      70:</span>     <span class="b">set_normalized_timespec</span><span class="f">(</span><span class="f">&amp;</span><span class="b">ts_delta</span><span class="f">,</span> <span class="b">lhs</span><span class="f">.</span><span class="b">tv_sec</span> <span class="f">+</span> <span class="b">rhs</span><span class="f">.</span><span class="b">tv_sec</span><span class="f">,</span>
<a name="71" /><span class="Maybe">      71:</span>                 <span class="b">lhs</span><span class="f">.</span><span class="b">tv_nsec</span> <span class="f">+</span> <span class="b">rhs</span><span class="f">.</span><span class="b">tv_nsec</span><span class="f">)</span><span class="f">;</span>
<a name="72" /><span class="Maybe">      72:</span>     <span class="m">return</span> <span class="b">ts_delta</span><span class="f">;</span>
<a name="73" /><span class="Maybe">      73:</span> <span class="f">}</span>
<a name="74" /><span class="Maybe">      74:</span> 
<a name="75" /><span class="Maybe">      75:</span> <span class="k">/*</span>
<a name="76" /><span class="Maybe">      76:</span> <span class="k"> * sub = lhs - rhs, in normalized form</span>
<a name="77" /><span class="Maybe">      77:</span> <span class="k"> */</span>
<a name="78" /><span class="Maybe">      78:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">timespec_sub</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="b">lhs</span><span class="f">,</span>
<a name="79" /><span class="Maybe">      79:</span>                         <span class="m">struct</span> <span class="b">timespec</span> <span class="b">rhs</span><span class="f">)</span>
<a name="80" /><span class="Maybe">      80:</span> <span class="f">{</span>
<a name="81" /><span class="Maybe">      81:</span>     <span class="m">struct</span> <span class="b">timespec</span> <span class="b">ts_delta</span><span class="f">;</span>
<a name="82" /><span class="Maybe">      82:</span>     <span class="b">set_normalized_timespec</span><span class="f">(</span><span class="f">&amp;</span><span class="b">ts_delta</span><span class="f">,</span> <span class="b">lhs</span><span class="f">.</span><span class="b">tv_sec</span> <span class="f">-</span> <span class="b">rhs</span><span class="f">.</span><span class="b">tv_sec</span><span class="f">,</span>
<a name="83" /><span class="Maybe">      83:</span>                 <span class="b">lhs</span><span class="f">.</span><span class="b">tv_nsec</span> <span class="f">-</span> <span class="b">rhs</span><span class="f">.</span><span class="b">tv_nsec</span><span class="f">)</span><span class="f">;</span>
<a name="84" /><span class="Maybe">      84:</span>     <span class="m">return</span> <span class="b">ts_delta</span><span class="f">;</span>
<a name="85" /><span class="Maybe">      85:</span> <span class="f">}</span>
<a name="86" /><span class="Maybe">      86:</span> 
<a name="87" /><span class="Maybe">      87:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_S1RJTUVfTUFYXzA_"><span class="b">KTIME_MAX</span></a>            <span class="f">(</span><span class="f">(</span><span class="b">s64</span><span class="f">)</span><span class="f">~</span><span class="f">(</span><span class="f">(</span><span class="b">u64</span><span class="f">)</span><span class="c">1</span> <span class="f">&lt;&lt;</span> <span class="c">63</span><span class="f">)</span><span class="f">)</span>
<a name="88" /><span class="Maybe">      88:</span> <span class="f">#</span><span class="n">if</span> <span class="f">(</span><a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a> <span class="f">==</span> <span class="c">64</span><span class="f">)</span>
<a name="89" /><span class="Maybe">      89:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_S1RJTUVfU0VDX01BWF8w"><span class="b">KTIME_SEC_MAX</span></a>            <span class="f">(</span><a href="cpu.c_macros_ref.html#_S1RJTUVfTUFYXzA_"><span class="b">KTIME_MAX</span></a> <span class="f">/</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a><span class="f">)</span>
<a name="90" /><span class="False">      90:</span> <span class="f">#</span><span class="n">else</span>
<a name="91" /><span class="False">      91:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_S1RJTUVfU0VDX01BWF8w"><span class="b">KTIME_SEC_MAX</span></a>            <a href="cpu.c_macros_noref.html#_TE9OR19NQVhfMA__"><span class="b">LONG_MAX</span></a>
<a name="92" /><span class="Maybe">      92:</span> <span class="f">#</span><span class="n">endif</span>
<a name="93" /><span class="Maybe">      93:</span> 
<a name="94" /><span class="Maybe">      94:</span> <span class="k">/*</span>
<a name="95" /><span class="Maybe">      95:</span> <span class="k"> * Returns true if the timespec is norm, false if denorm:</span>
<a name="96" /><span class="Maybe">      96:</span> <span class="k"> */</span>
<a name="97" /><span class="Maybe">      97:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">timespec_valid</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span>
<a name="98" /><span class="Maybe">      98:</span> <span class="f">{</span>
<a name="99" /><span class="Maybe">      99:</span>     <span class="k">/* Dates before 1970 are bogus */</span>
<a name="100" /><span class="Maybe">     100:</span>     <span class="m">if</span> <span class="f">(</span><span class="b">ts</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&lt;</span> <span class="c">0</span><span class="f">)</span>
<a name="101" /><span class="Maybe">     101:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="102" /><span class="Maybe">     102:</span>     <span class="k">/* Can&apos;t have more nanoseconds then a second */</span>
<a name="103" /><span class="Maybe">     103:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">)</span><span class="b">ts</span><span class="f">-&gt;</span><span class="b">tv_nsec</span> <span class="f">&gt;=</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a><span class="f">)</span>
<a name="104" /><span class="Maybe">     104:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="105" /><span class="Maybe">     105:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="106" /><span class="Maybe">     106:</span> <span class="f">}</span>
<a name="107" /><span class="Maybe">     107:</span> 
<a name="108" /><span class="Maybe">     108:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">timespec_valid_strict</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span>
<a name="109" /><span class="Maybe">     109:</span> <span class="f">{</span>
<a name="110" /><span class="Maybe">     110:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">!</span><span class="b">timespec_valid</span><span class="f">(</span><span class="b">ts</span><span class="f">)</span><span class="f">)</span>
<a name="111" /><span class="Maybe">     111:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="112" /><span class="Maybe">     112:</span>     <span class="k">/* Disallow values that could overflow ktime_t */</span>
<a name="113" /><span class="Maybe">     113:</span>     <span class="m">if</span> <span class="f">(</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span> <span class="m">long</span><span class="f">)</span><span class="b">ts</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">&gt;=</span> <a href="cpu.c_macros_ref.html#_S1RJTUVfU0VDX01BWF8w"><span class="b">KTIME_SEC_MAX</span></a><span class="f">)</span>
<a name="114" /><span class="Maybe">     114:</span>         <span class="m">return</span> <span class="m">false</span><span class="f">;</span>
<a name="115" /><span class="Maybe">     115:</span>     <span class="m">return</span> <span class="m">true</span><span class="f">;</span>
<a name="116" /><span class="Maybe">     116:</span> <span class="f">}</span>
<a name="117" /><span class="Maybe">     117:</span> 
<a name="118" /><span class="Maybe">     118:</span> <span class="m">extern</span> <span class="m">bool</span> <span class="b">persistent_clock_exist</span><span class="f">;</span>
<a name="119" /><span class="Maybe">     119:</span> 
<a name="120" /><span class="Maybe">     120:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">bool</span> <span class="b">has_persistent_clock</span><span class="f">(</span><span class="m">void</span><span class="f">)</span>
<a name="121" /><span class="Maybe">     121:</span> <span class="f">{</span>
<a name="122" /><span class="Maybe">     122:</span>     <span class="m">return</span> <span class="b">persistent_clock_exist</span><span class="f">;</span>
<a name="123" /><span class="Maybe">     123:</span> <span class="f">}</span>
<a name="124" /><span class="Maybe">     124:</span> 
<a name="125" /><span class="Maybe">     125:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">read_persistent_clock</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="126" /><span class="Maybe">     126:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">read_boot_clock</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="127" /><span class="Maybe">     127:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">persistent_clock_is_local</span><span class="f">;</span>
<a name="128" /><span class="Maybe">     128:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">update_persistent_clock</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="b">now</span><span class="f">)</span><span class="f">;</span>
<a name="129" /><span class="Maybe">     129:</span> <span class="m">void</span> <span class="b">timekeeping_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="130" /><span class="Maybe">     130:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">timekeeping_suspended</span><span class="f">;</span>
<a name="131" /><span class="Maybe">     131:</span> 
<a name="132" /><span class="Maybe">     132:</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">get_seconds</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="133" /><span class="Maybe">     133:</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">current_kernel_time</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="134" /><span class="Maybe">     134:</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">__current_kernel_time</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span> <span class="k">/* does not take xtime_lock */</span>
<a name="135" /><span class="Maybe">     135:</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">get_monotonic_coarse</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="136" /><span class="Maybe">     136:</span> <span class="m">void</span> <span class="b">get_xtime_and_monotonic_and_sleep_offset</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">xtim</span><span class="f">,</span>
<a name="137" /><span class="Maybe">     137:</span>                 <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">wtom</span><span class="f">,</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">sleep</span><span class="f">)</span><span class="f">;</span>
<a name="138" /><span class="Maybe">     138:</span> <span class="m">void</span> <span class="b">timekeeping_inject_sleeptime</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">delta</span><span class="f">)</span><span class="f">;</span>
<a name="139" /><span class="Maybe">     139:</span> 
<a name="140" /><span class="Maybe">     140:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1VSUkVOVF9USU1FXzA_"><span class="b">CURRENT_TIME</span></a>        <span class="f">(</span><span class="b">current_kernel_time</span><span class="f">(</span><span class="f">)</span><span class="f">)</span>
<a name="141" /><span class="Maybe">     141:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_Q1VSUkVOVF9USU1FX1NFQ18w"><span class="b">CURRENT_TIME_SEC</span></a>    <span class="f">(</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span><span class="f">)</span> <span class="f">{</span> <span class="b">get_seconds</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="c">0</span> <span class="f">}</span><span class="f">)</span>
<a name="142" /><span class="Maybe">     142:</span> 
<a name="143" /><span class="Maybe">     143:</span> <span class="k">/* Some architectures do not supply their own clocksource.</span>
<a name="144" /><span class="Maybe">     144:</span> <span class="k"> * This is mainly the case in architectures that get their</span>
<a name="145" /><span class="Maybe">     145:</span> <span class="k"> * inter-tick times by reading the counter on their interval</span>
<a name="146" /><span class="Maybe">     146:</span> <span class="k"> * timer. Since these timers wrap every tick, they&apos;re not really</span>
<a name="147" /><span class="Maybe">     147:</span> <span class="k"> * useful as clocksources. Wrapping them to act like one is possible</span>
<a name="148" /><span class="Maybe">     148:</span> <span class="k"> * but not very efficient. So we provide a callout these arches</span>
<a name="149" /><span class="Maybe">     149:</span> <span class="k"> * can implement for use with the jiffies clocksource to provide</span>
<a name="150" /><span class="Maybe">     150:</span> <span class="k"> * finer then tick granular time.</span>
<a name="151" /><span class="Maybe">     151:</span> <span class="k"> */</span>
<a name="152" /><span class="False">     152:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_ARCH_USES_GETTIMEOFFSET</span>
<a name="153" /><span class="False">     153:</span> <span class="m">extern</span> <a href="cpu.c_macros_ref.html#_dTMyXzA_"><span class="b">u32</span></a> <span class="f">(</span><span class="f">*</span><span class="b">arch_gettimeoffset</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="154" /><span class="Maybe">     154:</span> <span class="f">#</span><span class="n">endif</span>
<a name="155" /><span class="Maybe">     155:</span> 
<a name="156" /><span class="Maybe">     156:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">do_gettimeofday</span><span class="f">(</span><span class="m">struct</span> <span class="b">timeval</span> <span class="f">*</span><span class="b">tv</span><span class="f">)</span><span class="f">;</span>
<a name="157" /><span class="Maybe">     157:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">do_settimeofday</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">tv</span><span class="f">)</span><span class="f">;</span>
<a name="158" /><span class="Maybe">     158:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">do_sys_settimeofday</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">tv</span><span class="f">,</span>
<a name="159" /><span class="Maybe">     159:</span>                    <span class="m">const</span> <span class="m">struct</span> <span class="b">timezone</span> <span class="f">*</span><span class="b">tz</span><span class="f">)</span><span class="f">;</span>
<a name="160" /><span class="Maybe">     160:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_ZG9fcG9zaXhfY2xvY2tfbW9ub3RvbmljX2dldHRpbWVfMA__"><span class="b">do_posix_clock_monotonic_gettime</span></a><span class="f">(</span><span class="b">ts</span><span class="f">)</span> <span class="b">ktime_get_ts</span><span class="f">(</span><span class="b">ts</span><span class="f">)</span>
<a name="161" /><span class="Maybe">     161:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">do_utimes</span><span class="f">(</span><span class="m">int</span> <span class="b">dfd</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">filename</span><span class="f">,</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">times</span><span class="f">,</span> <span class="m">int</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>
<a name="162" /><span class="Maybe">     162:</span> <span class="m">struct</span> <span class="b">itimerval</span><span class="f">;</span>
<a name="163" /><span class="Maybe">     163:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">do_setitimer</span><span class="f">(</span><span class="m">int</span> <span class="b">which</span><span class="f">,</span> <span class="m">struct</span> <span class="b">itimerval</span> <span class="f">*</span><span class="b">value</span><span class="f">,</span>
<a name="164" /><span class="Maybe">     164:</span>             <span class="m">struct</span> <span class="b">itimerval</span> <span class="f">*</span><span class="b">ovalue</span><span class="f">)</span><span class="f">;</span>
<a name="165" /><span class="Maybe">     165:</span> <span class="m">extern</span> <span class="m">unsigned</span> <span class="m">int</span> <span class="b">alarm_setitimer</span><span class="f">(</span><span class="m">unsigned</span> <span class="m">int</span> <span class="b">seconds</span><span class="f">)</span><span class="f">;</span>
<a name="166" /><span class="Maybe">     166:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">do_getitimer</span><span class="f">(</span><span class="m">int</span> <span class="b">which</span><span class="f">,</span> <span class="m">struct</span> <span class="b">itimerval</span> <span class="f">*</span><span class="b">value</span><span class="f">)</span><span class="f">;</span>
<a name="167" /><span class="Maybe">     167:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">__getnstimeofday</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">tv</span><span class="f">)</span><span class="f">;</span>
<a name="168" /><span class="Maybe">     168:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">getnstimeofday</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">tv</span><span class="f">)</span><span class="f">;</span>
<a name="169" /><span class="Maybe">     169:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">getrawmonotonic</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="170" /><span class="Maybe">     170:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">getnstime_raw_and_real</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts_raw</span><span class="f">,</span>
<a name="171" /><span class="Maybe">     171:</span>         <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts_real</span><span class="f">)</span><span class="f">;</span>
<a name="172" /><span class="Maybe">     172:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">getboottime</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="173" /><span class="Maybe">     173:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">monotonic_to_bootbased</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="174" /><span class="Maybe">     174:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">get_monotonic_boottime</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="175" /><span class="Maybe">     175:</span> 
<a name="176" /><span class="Maybe">     176:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">timespec_trunc</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="b">t</span><span class="f">,</span> <span class="m">unsigned</span> <span class="b">gran</span><span class="f">)</span><span class="f">;</span>
<a name="177" /><span class="Maybe">     177:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">timekeeping_valid_for_hres</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="178" /><span class="Maybe">     178:</span> <span class="m">extern</span> <span class="b">u64</span> <span class="b">timekeeping_max_deferment</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="179" /><span class="Maybe">     179:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">timekeeping_inject_offset</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="180" /><span class="Maybe">     180:</span> <span class="m">extern</span> <span class="b">s32</span> <span class="b">timekeeping_get_tai_offset</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="181" /><span class="Maybe">     181:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">timekeeping_set_tai_offset</span><span class="f">(</span><span class="b">s32</span> <span class="b">tai_offset</span><span class="f">)</span><span class="f">;</span>
<a name="182" /><span class="Maybe">     182:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">timekeeping_clocktai</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span><span class="f">;</span>
<a name="183" /><span class="Maybe">     183:</span> 
<a name="184" /><span class="Maybe">     184:</span> <span class="m">struct</span> <span class="b">tms</span><span class="f">;</span>
<a name="185" /><span class="Maybe">     185:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">do_sys_times</span><span class="f">(</span><span class="m">struct</span> <span class="b">tms</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="186" /><span class="Maybe">     186:</span> 
<a name="187" /><span class="Maybe">     187:</span> <span class="k">/*</span>
<a name="188" /><span class="Maybe">     188:</span> <span class="k"> * Similar to the struct tm in userspace &lt;time.h&gt;, but it needs to be here so</span>
<a name="189" /><span class="Maybe">     189:</span> <span class="k"> * that the kernel source is self contained.</span>
<a name="190" /><span class="Maybe">     190:</span> <span class="k"> */</span>
<a name="191" /><span class="Maybe">     191:</span> <span class="m">struct</span> <span class="b">tm</span> <span class="f">{</span>
<a name="192" /><span class="Maybe">     192:</span>     <span class="k">/*</span>
<a name="193" /><span class="Maybe">     193:</span> <span class="k">     * the number of seconds after the minute, normally in the range</span>
<a name="194" /><span class="Maybe">     194:</span> <span class="k">     * 0 to 59, but can be up to 60 to allow for leap seconds</span>
<a name="195" /><span class="Maybe">     195:</span> <span class="k">     */</span>
<a name="196" /><span class="Maybe">     196:</span>     <span class="m">int</span> <span class="b">tm_sec</span><span class="f">;</span>
<a name="197" /><span class="Maybe">     197:</span>     <span class="k">/* the number of minutes after the hour, in the range 0 to 59*/</span>
<a name="198" /><span class="Maybe">     198:</span>     <span class="m">int</span> <span class="b">tm_min</span><span class="f">;</span>
<a name="199" /><span class="Maybe">     199:</span>     <span class="k">/* the number of hours past midnight, in the range 0 to 23 */</span>
<a name="200" /><span class="Maybe">     200:</span>     <span class="m">int</span> <span class="b">tm_hour</span><span class="f">;</span>
<a name="201" /><span class="Maybe">     201:</span>     <span class="k">/* the day of the month, in the range 1 to 31 */</span>
<a name="202" /><span class="Maybe">     202:</span>     <span class="m">int</span> <span class="b">tm_mday</span><span class="f">;</span>
<a name="203" /><span class="Maybe">     203:</span>     <span class="k">/* the number of months since January, in the range 0 to 11 */</span>
<a name="204" /><span class="Maybe">     204:</span>     <span class="m">int</span> <span class="b">tm_mon</span><span class="f">;</span>
<a name="205" /><span class="Maybe">     205:</span>     <span class="k">/* the number of years since 1900 */</span>
<a name="206" /><span class="Maybe">     206:</span>     <span class="m">long</span> <span class="b">tm_year</span><span class="f">;</span>
<a name="207" /><span class="Maybe">     207:</span>     <span class="k">/* the number of days since Sunday, in the range 0 to 6 */</span>
<a name="208" /><span class="Maybe">     208:</span>     <span class="m">int</span> <span class="b">tm_wday</span><span class="f">;</span>
<a name="209" /><span class="Maybe">     209:</span>     <span class="k">/* the number of days since January 1, in the range 0 to 365 */</span>
<a name="210" /><span class="Maybe">     210:</span>     <span class="m">int</span> <span class="b">tm_yday</span><span class="f">;</span>
<a name="211" /><span class="Maybe">     211:</span> <span class="f">}</span><span class="f">;</span>
<a name="212" /><span class="Maybe">     212:</span> 
<a name="213" /><span class="Maybe">     213:</span> <span class="m">void</span> <span class="b">time_to_tm</span><span class="f">(</span><span class="b">time_t</span> <span class="b">totalsecs</span><span class="f">,</span> <span class="m">int</span> <span class="b">offset</span><span class="f">,</span> <span class="m">struct</span> <span class="b">tm</span> <span class="f">*</span><span class="b">result</span><span class="f">)</span><span class="f">;</span>
<a name="214" /><span class="Maybe">     214:</span> 
<a name="215" /><span class="Maybe">     215:</span> <span class="k">/**</span>
<a name="216" /><span class="Maybe">     216:</span> <span class="k"> * timespec_to_ns - Convert timespec to nanoseconds</span>
<a name="217" /><span class="Maybe">     217:</span> <span class="k"> * @ts:        pointer to the timespec variable to be converted</span>
<a name="218" /><span class="Maybe">     218:</span> <span class="k"> *</span>
<a name="219" /><span class="Maybe">     219:</span> <span class="k"> * Returns the scalar nanosecond representation of the timespec</span>
<a name="220" /><span class="Maybe">     220:</span> <span class="k"> * parameter.</span>
<a name="221" /><span class="Maybe">     221:</span> <span class="k"> */</span>
<a name="222" /><span class="Maybe">     222:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">timespec_to_ns</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">ts</span><span class="f">)</span>
<a name="223" /><span class="Maybe">     223:</span> <span class="f">{</span>
<a name="224" /><span class="Maybe">     224:</span>     <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="b">s64</span><span class="f">)</span> <span class="b">ts</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a><span class="f">)</span> <span class="f">+</span> <span class="b">ts</span><span class="f">-&gt;</span><span class="b">tv_nsec</span><span class="f">;</span>
<a name="225" /><span class="Maybe">     225:</span> <span class="f">}</span>
<a name="226" /><span class="Maybe">     226:</span> 
<a name="227" /><span class="Maybe">     227:</span> <span class="k">/**</span>
<a name="228" /><span class="Maybe">     228:</span> <span class="k"> * timeval_to_ns - Convert timeval to nanoseconds</span>
<a name="229" /><span class="Maybe">     229:</span> <span class="k"> * @ts:        pointer to the timeval variable to be converted</span>
<a name="230" /><span class="Maybe">     230:</span> <span class="k"> *</span>
<a name="231" /><span class="Maybe">     231:</span> <span class="k"> * Returns the scalar nanosecond representation of the timeval</span>
<a name="232" /><span class="Maybe">     232:</span> <span class="k"> * parameter.</span>
<a name="233" /><span class="Maybe">     233:</span> <span class="k"> */</span>
<a name="234" /><span class="Maybe">     234:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">timeval_to_ns</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">timeval</span> <span class="f">*</span><span class="b">tv</span><span class="f">)</span>
<a name="235" /><span class="Maybe">     235:</span> <span class="f">{</span>
<a name="236" /><span class="Maybe">     236:</span>     <span class="m">return</span> <span class="f">(</span><span class="f">(</span><span class="b">s64</span><span class="f">)</span> <span class="b">tv</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a><span class="f">)</span> <span class="f">+</span>
<a name="237" /><span class="Maybe">     237:</span>         <span class="b">tv</span><span class="f">-&gt;</span><span class="b">tv_usec</span> <span class="f">*</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfVVNFQ18w"><span class="b">NSEC_PER_USEC</span></a><span class="f">;</span>
<a name="238" /><span class="Maybe">     238:</span> <span class="f">}</span>
<a name="239" /><span class="Maybe">     239:</span> 
<a name="240" /><span class="Maybe">     240:</span> <span class="k">/**</span>
<a name="241" /><span class="Maybe">     241:</span> <span class="k"> * ns_to_timespec - Convert nanoseconds to timespec</span>
<a name="242" /><span class="Maybe">     242:</span> <span class="k"> * @nsec:    the nanoseconds value to be converted</span>
<a name="243" /><span class="Maybe">     243:</span> <span class="k"> *</span>
<a name="244" /><span class="Maybe">     244:</span> <span class="k"> * Returns the timespec representation of the nsec parameter.</span>
<a name="245" /><span class="Maybe">     245:</span> <span class="k"> */</span>
<a name="246" /><span class="Maybe">     246:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="b">ns_to_timespec</span><span class="f">(</span><span class="m">const</span> <span class="b">s64</span> <span class="b">nsec</span><span class="f">)</span><span class="f">;</span>
<a name="247" /><span class="Maybe">     247:</span> 
<a name="248" /><span class="Maybe">     248:</span> <span class="k">/**</span>
<a name="249" /><span class="Maybe">     249:</span> <span class="k"> * ns_to_timeval - Convert nanoseconds to timeval</span>
<a name="250" /><span class="Maybe">     250:</span> <span class="k"> * @nsec:    the nanoseconds value to be converted</span>
<a name="251" /><span class="Maybe">     251:</span> <span class="k"> *</span>
<a name="252" /><span class="Maybe">     252:</span> <span class="k"> * Returns the timeval representation of the nsec parameter.</span>
<a name="253" /><span class="Maybe">     253:</span> <span class="k"> */</span>
<a name="254" /><span class="Maybe">     254:</span> <span class="m">extern</span> <span class="m">struct</span> <span class="b">timeval</span> <span class="b">ns_to_timeval</span><span class="f">(</span><span class="m">const</span> <span class="b">s64</span> <span class="b">nsec</span><span class="f">)</span><span class="f">;</span>
<a name="255" /><span class="Maybe">     255:</span> 
<a name="256" /><span class="Maybe">     256:</span> <span class="k">/**</span>
<a name="257" /><span class="Maybe">     257:</span> <span class="k"> * timespec_add_ns - Adds nanoseconds to a timespec</span>
<a name="258" /><span class="Maybe">     258:</span> <span class="k"> * @a:        pointer to timespec to be incremented</span>
<a name="259" /><span class="Maybe">     259:</span> <span class="k"> * @ns:        unsigned nanoseconds value to be added</span>
<a name="260" /><span class="Maybe">     260:</span> <span class="k"> *</span>
<a name="261" /><span class="Maybe">     261:</span> <span class="k"> * This must always be inlined because its used from the x86-64 vdso,</span>
<a name="262" /><span class="Maybe">     262:</span> <span class="k"> * which cannot call other kernel functions.</span>
<a name="263" /><span class="Maybe">     263:</span> <span class="k"> */</span>
<a name="264" /><span class="Maybe">     264:</span> <span class="m">static</span> <a href="cpu.c_macros_ref.html#_X19hbHdheXNfaW5saW5lXzA_"><span class="b">__always_inline</span></a> <span class="m">void</span> <span class="b">timespec_add_ns</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">a</span><span class="f">,</span> <span class="b">u64</span> <span class="b">ns</span><span class="f">)</span>
<a name="265" /><span class="Maybe">     265:</span> <span class="f">{</span>
<a name="266" /><span class="Maybe">     266:</span>     <span class="b">a</span><span class="f">-&gt;</span><span class="b">tv_sec</span> <span class="f">+=</span> <span class="b">__iter_div_u64_rem</span><span class="f">(</span><span class="b">a</span><span class="f">-&gt;</span><span class="b">tv_nsec</span> <span class="f">+</span> <span class="b">ns</span><span class="f">,</span> <a href="cpu.c_macros_ref.html#_TlNFQ19QRVJfU0VDXzA_"><span class="b">NSEC_PER_SEC</span></a><span class="f">,</span> <span class="f">&amp;</span><span class="b">ns</span><span class="f">)</span><span class="f">;</span>
<a name="267" /><span class="Maybe">     267:</span>     <span class="b">a</span><span class="f">-&gt;</span><span class="b">tv_nsec</span> <span class="f">=</span> <span class="b">ns</span><span class="f">;</span>
<a name="268" /><span class="Maybe">     268:</span> <span class="f">}</span>
<a name="269" /><span class="Maybe">     269:</span> 
<a name="270" /><span class="True">     270:</span> <span class="f">#</span><span class="n">endif</span>
<a name="271" /><span class="True">     271:</span> </pre>
  </body>
</html>
